//package com.navinfo.platform.thousandkilo.service;
//
//import com.navinfo.platform.thousandkilo.dto.DayStatisticsDto;
//import com.navinfo.platform.thousandkilo.dto.ThousandKiloData;
//import com.navinfo.platform.thousandkilo.dto.TripInfoDto;
//import org.apache.spark.api.java.JavaRDD;
//import org.apache.spark.api.java.JavaSparkContext;
//import org.apache.spark.sql.Row;
//import org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema;
//import org.apache.spark.sql.types.DataTypes;
//import org.apache.spark.sql.types.Metadata;
//import org.apache.spark.sql.types.StructField;
//import org.apache.spark.sql.types.StructType;
//
//import java.util.*;
//import java.util.stream.Collectors;
//
//public class TestDataBuildHelper {
//    private TestDataBuildHelper() {
//    }
//
//    static Map<Long, ThousandKiloData> debug_getSectionMap() {
//        Map<Long, ThousandKiloData> ret = new HashMap<>();
//        ret.put(11111111L, new ThousandKiloData(11111111L, 11111111L, 1000000,
//                253, 254, 1,
//                6551, 6552, 1, 9));
//        ret.put(22222222L, new ThousandKiloData(22222222L, 22222222L, 2000000,
//                263, 265, 2,
//                1006651, 1006653, 2, 8));
//        ret.put(33333333L, new ThousandKiloData(33333333L, 33333333L, 3000000,
//                273, 276, 3,
//                2006751, 2006754, 3, 7));
//        ret.put(44444444L, new ThousandKiloData(44444444L, 44444444L, 4000000,
//                283, 287, 4,
//                3006851, 3006855, 4, 6));
//        ret.put(77777777L, new ThousandKiloData(77777777L, 77777777L, 5000000,
//                293, 298, 5,
//                4006951, 4006956, 5, 5));
//        ret.put(88888888L, new ThousandKiloData(88888888L, 88888888L, 6000000,
//                303, 309, 6,
//                5007051, 5007057, 6, 4));
//        return ret;
//    }
//
//    static List<TripInfoDto> debug_getDayStatistics() {
//        List<TripInfoDto> ret = new ArrayList<>();
//        ret.addAll(Arrays.asList(
//                debug_tripInfoDto(11111111L, 1, 999980, 456, 26),
//                debug_tripInfoDto(11111111L, 2, 999987, 534, 79),
//                debug_tripInfoDto(11111111L, 3, 1400023, 612, 64),
//                debug_tripInfoDto(11111111L, 4, 1800059, 690, 23),
//                debug_tripInfoDto(11111111L, 5, 2000095, 768, 54),
//                debug_tripInfoDto(11111111L, 6, 2000131, 846, 89)
//        ));
//        ret.addAll(Arrays.asList(
//                debug_tripInfoDto(22222222L, 1, 1999977, 301, 11),
//                debug_tripInfoDto(22222222L, 2, 1999981, 359, 26),
//                debug_tripInfoDto(22222222L, 3, 1999985, 417, 78),
//                debug_tripInfoDto(22222222L, 4, 1999989, 475, 35)
//        ));
//        ret.addAll(Arrays.asList(
//                debug_tripInfoDto(33333333L, 1, 3000234, 402, 21),
//                debug_tripInfoDto(33333333L, 2, 3400284, 501, 82),
//                debug_tripInfoDto(33333333L, 3, 3800739, 600, 34),
//                debug_tripInfoDto(33333333L, 4, 3901666, 699, 67),
//                debug_tripInfoDto(33333333L, 5, 4100231, 798, 99),
//                debug_tripInfoDto(33333333L, 6, 4199001, 897, 80)
//        ));
//        ret.addAll(Arrays.asList(
//                debug_tripInfoDto(44444444L, 1, 4000111, 464, 74),
//                debug_tripInfoDto(44444444L, 2, 4000221, 499, 11),
//                debug_tripInfoDto(44444444L, 3, 4000399, 534, 35)
//        ));
//        ret.addAll(Arrays.asList(
//                debug_tripInfoDto(55555555L, 1, 5009, 558, 93),
//                debug_tripInfoDto(55555555L, 2, 1000199, 818, 41),
//                debug_tripInfoDto(55555555L, 3, 1000999, 890, 44)
//        ));
//        ret.addAll(Arrays.asList(
//                debug_tripInfoDto(66666666L, 1, 1000001, 420, 60),
//                debug_tripInfoDto(66666666L, 2, 1000021, 431, 76),
//                debug_tripInfoDto(66666666L, 3, 1000033, 444, 13)
//        ));
//        ret.addAll(Arrays.asList(
//                debug_tripInfoDto(77777777L, 1, 4007123, 399, 73)
//        ));
//        ret.addAll(Arrays.asList(
//                debug_tripInfoDto(88888888L, 1, 6000222, 411, 56)
//        ));
//        ret.addAll(Arrays.asList(
//                debug_tripInfoDto(99999999L, 1, 2000333, 603, 65)
//        ));
//        return ret;
//    }
//
//    static void debug_saveToHbase(Collection<ThousandKiloData> data) {
//        String[] title = {"uid", "tid", "mileageSection", "sectionStartFuel", "sectionEndFuel", "sectionFuel",
//                "sectionStartMileage", "sectionEndMileage", "sectionMileage", "sectionUrea"};
//        for (int i = 0; i < title.length; i++) {
//            System.out.printf("%-22s", title[i]);
//        }
//        System.out.println();
//        for (ThousandKiloData d : data) {
//            System.out.printf("%-22s", d.getUid());
//            System.out.printf("%-22s", d.getTid());
//            System.out.printf("%-22s", d.getMileageSection());
//            System.out.printf("%-22s", d.getSectionStartFuel());
//            System.out.printf("%-22s", d.getSectionEndFuel());
//            System.out.printf("%-22s", d.getSectionFuel());
//            System.out.printf("%-22s", d.getSectionStartMileage());
//            System.out.printf("%-22s", d.getSectionEndMileage());
//            System.out.printf("%-22s", d.getSectionMileage());
//            System.out.printf("%-22s", d.getSectionUrea());
//            System.out.println();
//        }
//    }
//
//    private static DayStatisticsDto debug_dayStatisticsDto(Long tid, List<TripInfoDto> tripInfoDtos) {
//        DayStatisticsDto d = new DayStatisticsDto();
//        d.setUid(tid);
//        d.setTid(tid);
//        d.setTripInfos(tripInfoDtos);
//        return d;
//    }
//
//    private static TripInfoDto debug_tripInfoDto(Long tid, Integer tripId, Integer routeEndMileage, Integer routeEndFuel, Integer tripUrea) {
//        return new TripInfoDto(tid, tripId, 123, 123, routeEndMileage, routeEndFuel, tripUrea);
//    }
//
//    /**
//     * 创建Schema
//     */
//    private static StructType createSchema() {
//        List<StructField> list = new ArrayList<>();
//        /*--start_schema*/
//        list.add(new StructField("uid", DataTypes.LongType, true, Metadata.empty()));
//        list.add(new StructField("tid", DataTypes.LongType, true, Metadata.empty()));
//        list.add(new StructField("trip_id", DataTypes.IntegerType, true, Metadata.empty()));
//        list.add(new StructField("route_start_mileage", DataTypes.IntegerType, true, Metadata.empty()));
//        list.add(new StructField("route_start_fuel", DataTypes.IntegerType, true, Metadata.empty()));
//        list.add(new StructField("route_end_mileage", DataTypes.IntegerType, true, Metadata.empty()));
//        list.add(new StructField("route_end_fuel", DataTypes.IntegerType, true, Metadata.empty()));
//        /*--end_schema*/
//        return new StructType(list.toArray(new StructField[list.size()]));
//    }
//
//    /**
//     * 创建一行数据
//     */
//    private static Row createRow(TripInfoDto m, StructType schema) {
//        List<Object> list = new ArrayList<>();
//        /*--start_row*/
//        list.add(m.getTid());
//        list.add(m.getTid());
//        list.add(m.getTripId());
//        list.add(m.getRouteStartMileage());
//        list.add(m.getRouteStartFuel());
//        list.add(m.getRouteEndMileage());
//        list.add(m.getRouteEndFuel());
//        /*--end_row*/
//        return new GenericRowWithSchema(list.toArray(), schema);
//    }
//
//    public static JavaRDD<Row> trip(JavaSparkContext jsc) {
//        return jsc.parallelize(debug_getDayStatistics().stream().map(e -> createRow(e, createSchema())).collect(Collectors.toList()));
//    }
//
//    /**
//     * 创建Schema
//     */
//    private static StructType createSchema2() {
//        List<StructField> list = new ArrayList<>();
//        /*--start_schema*/
//        list.add(new StructField("uid", DataTypes.LongType, true, Metadata.empty()));
//        list.add(new StructField("tid", DataTypes.LongType, true, Metadata.empty()));
//        list.add(new StructField("mileageSection", DataTypes.IntegerType, true, Metadata.empty()));
//        list.add(new StructField("sectionStartFuel", DataTypes.IntegerType, true, Metadata.empty()));
//        list.add(new StructField("sectionEndFuel", DataTypes.IntegerType, true, Metadata.empty()));
//        list.add(new StructField("sectionFuel", DataTypes.IntegerType, true, Metadata.empty()));
//        list.add(new StructField("sectionStartMileage", DataTypes.IntegerType, true, Metadata.empty()));
//        list.add(new StructField("sectionEndMileage", DataTypes.IntegerType, true, Metadata.empty()));
//        list.add(new StructField("sectionMileage", DataTypes.IntegerType, true, Metadata.empty()));
//        list.add(new StructField("sectionUrea", DataTypes.IntegerType, true, Metadata.empty()));
//        /*--end_schema*/
//        return new StructType(list.toArray(new StructField[list.size()]));
//    }
//
//    /**
//     * 创建一行数据
//     */
//    private static Row createRow2(ThousandKiloData m, StructType schema) {
//        List<Object> list = new ArrayList<>();
//        /*--start_row*/
//        list.add(m.getUid());
//        list.add(m.getTid());
//        list.add(m.getMileageSection());
//        list.add(m.getSectionStartFuel());
//        list.add(m.getSectionEndFuel());
//        list.add(m.getSectionFuel());
//        list.add(m.getSectionStartMileage());
//        list.add(m.getSectionEndMileage());
//        list.add(m.getSectionMileage());
//        list.add(m.getSectionUrea());
//        /*--end_row*/
//        return new GenericRowWithSchema(list.toArray(), schema);
//    }
//
//    public static JavaRDD<Row> thousand(JavaSparkContext jsc) {
//        return jsc.parallelize(debug_getSectionMap().values().stream().map(e -> createRow2(e, createSchema2())).collect(Collectors.toList()));
//    }
//}
